package com.guangfeng.yql.bean.dto;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.experimental.Accessors;

/**
 * <p>
 * 用户表
 * </p>
 *
 * @author yql
 * @since 2022-09-21
 */
@Data
@Accessors(chain = true)
@TableName("yql_user")
@ApiModel(value = "UserDto对象", description = "用户表")
public class UserDto implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty("ID")
    @TableId(value = "user_id", type = IdType.AUTO)
    @Range(min = 0,max = 100000000,message = "ID 不合法")
    @NotNull(message = "ID 不能为空")
    private Long userId;

    @ApiModelProperty("部门id")
    @TableField("did")
    @Range(min = 0,max = 100000000,message = "部门id 不合法")
    @NotNull(message = "部门id 不能为空")
    private Long did;

    @ApiModelProperty("用户昵称")
    @TableField("nick_name")
    @Length(max = 50,message = "用户昵称 不能成功50字")
    @NotEmpty(message = "用户昵称 不能为空")
    private String nickName;

    @ApiModelProperty("真实姓名")
    @TableField("real_name")
    @Length(max = 50,message = "真实姓名 不能成功50字")
    @NotEmpty(message = "真实姓名 不能为空")
    private String realName;

    @ApiModelProperty("用户邮箱")
    @TableField("user_mail")
    @Length(max = 50,message = "用户邮箱 不能成功50字")
    @NotEmpty(message = "用户邮箱 不能为空")
    private String userMail;

    @ApiModelProperty("登录密码")
    @TableField("login_password")
    @Length(max = 50,message = "登录密码 不能成功50字")
    @NotEmpty(message = "登录密码 不能为空")
    private String loginPassword;

    @ApiModelProperty("支付密码")
    @TableField("pay_password")
    @Length(max = 50,message = "支付密码 不能成功50字")
    @NotEmpty(message = "支付密码 不能为空")
    private String payPassword;

    @ApiModelProperty("手机号码")
    @TableField("user_mobile")
    @Length(max = 50,message = "手机号码 不能成功50字")
    @NotEmpty(message = "手机号码 不能为空")
    private String userMobile;

    @ApiModelProperty("注册时间")
    @TableField("user_regtime")
    @NotNull(message = "注册时间 不能为空")
    private LocalDateTime userRegtime;

    @ApiModelProperty("注册IP")
    @TableField("user_regip")
    @Length(max = 50,message = "注册IP 不能成功50字")
    @NotEmpty(message = "注册IP 不能为空")
    private String userRegip;

    @ApiModelProperty("最后登录时间")
    @TableField("user_lasttime")
    @NotNull(message = "最后登录时间 不能为空")
    private LocalDateTime userLasttime;

    @ApiModelProperty("最后登录IP")
    @TableField("user_lastip")
    @Length(max = 50,message = "最后登录IP 不能成功50字")
    @NotEmpty(message = "最后登录IP 不能为空")
    private String userLastip;

    @ApiModelProperty("备注")
    @TableField("user_memo")
    @Length(max = 50,message = "备注 不能成功50字")
    @NotEmpty(message = "备注 不能为空")
    private String userMemo;

    @ApiModelProperty("M(男) or F(女)")
    @TableField("sex")
    @Length(max = 50,message = "M(男) or F(女) 不能成功50字")
    @NotEmpty(message = "M(男) or F(女) 不能为空")
    private String sex;

    @ApiModelProperty("例如：2009-11-27")
    @TableField("birth_date")
    @Length(max = 50,message = "例如：2009-11-27 不能成功50字")
    @NotEmpty(message = "例如：2009-11-27 不能为空")
    private String birthDate;

    @ApiModelProperty("头像图片路径")
    @TableField("pic")
    @Length(max = 50,message = "头像图片路径 不能成功50字")
    @NotEmpty(message = "头像图片路径 不能为空")
    private String pic;

    @ApiModelProperty("状态 1 正常 0 无效")
    @TableField("status")
    @Range(min = 0,max = 100000000,message = "状态 1 正常 0 无效 不合法")
    @NotNull(message = "状态 1 正常 0 无效 不能为空")
    private Integer status;

    @ApiModelProperty("用户积分")
    @TableField("score")
    @Range(min = 0,max = 100000000,message = "用户积分 不合法")
    @NotNull(message = "用户积分 不能为空")
    private Integer score;


}
